perm filename TALK[4,KMC]1 blob sn#006455 filedate 1971-06-07 generic text, type T, neo UTF8
00010	BEGIN  NEW EOF, FILE1, FILE2;   SPECIAL EOF, FILE1, FILE2;
00020	
00030	% TO RECONSTRUCT THE TALK CORE IMAGE:
00040	
00050		.R MLISPC					( COMPILE TALK. )
00060		*(MLISP TALK T)
00070		*↑C
00080	
00090		.R LISP 14					( READ IN THE LAP CODE. )
00100		ALLOC? Y
00110		FULL WDS=_					( _ MEANS <SPACE> )
00120		BIN.PROG.SP=3000_
00130		SPEC.PDL=_
00140		REG. PDL=_
00150		HASH=_
00160		*(DSKIN SYS: LAP DSK: (TALK.LAP) (2 DAV) (MAIL.FNS) SYS: UTILS)
00170		*↑C
00180		.SAVE TALK00
00190	
00200	TO RUN THE PROGRAM, TYPE
00210		.RUN TALK00[1,SYL]
00220		*(RESTART)
00230	%
00240	
00250	
00260	FEXPR OUT (L);			% L = (DESTINATION  FUNCTION  OPEN  CLOSE) %
00270	   IF L[1] EQ 'DOC THEN SEND_MAIL('DOCJOB, L[2]) ELSE
00280	   IF L[1] EQ 'OWN THEN EVAL L[2]
00290	   ELSE BEGIN
00300	      IF LENGTH L ≥ 3 & L[3] THEN EVAL <'OUTPUT, 'DSK:, EVAL L[1]>;
00310	      OUTC(T, NIL);
00320	      EVAL L[2];
00330	      OUTC(NIL, IF LENGTH L = 4 THEN L[4] ELSE NIL);
00340	   END;
00350	
00360	FEXPR INP (L);			% L = (SOURCE  FUNCTION) %
00370	   IF L[1] EQ 'DOC THEN SEND_MAIL('DOCJOB, <'SEND_MAIL, '(QUOTE TALK00), L[2]>) ALSO WAIT_FOR_MAIL(L[3])
00380	   ELSE EVAL L[2];
00390	
00400	EXPR READ_MESSAGE ();
00410	   BEGIN  NEW L;
00420	      PRINTSTR "READY:";
00430	      TERPRI TERPRI DO NIL UNTIL CAR(L ← READCH() CONS L) EQ ALTMODE & CADR L EQ ALTMODE;
00440	      RETURN READLIST('?" CONS REVERSE('?" CONS CDDR L))
00450	   END;
00460	
00470	EXPR PRINT_MESSAGE (MESSAGE);	TERPRI TERPRI FOR NEW CH IN MESSAGE DO PRINC CH;
00480	
00490	EXPR PRINT_ALL (FILE);		% COPIES FILE "FILE" TO THE CURRENTLY OPEN OUTPUT FILE. %
00500	   BEGIN  NEW CH;
00510	      EVAL <'INC, <'INPUT, FILE, 'DSK:, FILE>, NIL>;
00520	      DO NIL UNTIL TYO TYI() EQ OCTAL 45 & (ATOM(CH ← ERRSET(READCH(),T))  |  PRINC CAR CH & NIL);
00530	      INC(NIL,T)
00540	   END;
     

00010	%##########################################################################################%
00020	%########################          EXECUTION BEGINS HERE          #########################%
00030	%##########################################################################################%
00040	
00050	EOF ← PERCENT;					% THE END-OF-FILE CHARACTER %
00060	
00070	PRINTSTR "WHAT DISK FILE DO YOU WANT THIS INTERVIEW SAVED ON?  (5 LETTERS ONLY)";
00080	FILE1 ← READ();
00090	FILE2 ← AT(SUBSTR(FILE1,1,5) CAT "A");		% OUTPUT ALTERNATES BETWEEN THESE TWO. %
00100	OUT(FILE1, NIL, T);				% INITIALIZATION %
00110	
00120	
00130	WHILE T DO
00140	BEGIN  NEW MESSAGE, VALUES;   SPECIAL MESSAGE, VALUES;
00150	   IF ¬JOB_EXISTS('DOCJOB) THEN
00160	   BEGIN
00170	      PRINTSTR "THE DOCTOR HAS NOT STARTED RUNNING 'DOCJOB' YET.";
00180	      DO SLEEP(30) UNTIL JOB_EXISTS('DOCJOB) | PROG2(PRINTSTR "STILL HASN'T STARTED 'DOCJOB'", NIL);
00190	      TERPRI PRINTSTR "OK, HE JUST STARTED IT.";
00200	      SLEEP(30)					% MAKE SURE HE HAS TIME TO START IT UP. %
00210	   END;
00220	
00230	   MESSAGE ← INP(DOC, READ_MESSAGE(), NIL);
00240	   OUT(OWN, TERPRI PRINTSTR MESSAGE);
00250	   OUT(FILE1, TERPRI PRINTSTR TERPRI TERPRI MESSAGE);
00260	
00270	   MESSAGE ← INP(OWN, READ_MESSAGE());
00280	   OUT(FILE1, PRINTSTR MESSAGE);
00290	   VALUES ← EVAL <'INP, 'DOC,
00300	      <'PROG, '(X),
00310		      <'PRINTSTR, <'QUOTE, AT MESSAGE>>,
00320		      '(PRINT (QUOTE RESPONSE:)),
00330		      '(CLEAR_BUFFER),
00340		      '(SETQ X (READ)),
00350		      '(PRINT (QUOTE PATIENT:)),
00360		      '(CLEAR_BUFFER),
00370		      '(RETURN (LIST (QUOTE RESPONSE) X (QUOTE PATIENT) (TERPRI (TERPRI (READ)))))>>;
00380	   OUT(FILE1, PROG2(PRINT VALUES, PRINC TERPRI EOF), NIL, T);
00390	   SAVEJOB('TALK00,'SAV);	% SAVE THE CORE IMAGE UNDER TALK00.SAV IN CASE THE SYSTEM GOES DOWN. %
00400	
00410	% THIS IS THE POINT AT WHICH THE PROGRAM WILL START IF THE SYSTEM GOES DOWN. %
00420	   '(FILE1 FILE2) ←⊗ <FILE2, FILE1>;		% ROTATE THE OUTPUT FILES. %
00430	   OUT(FILE1, PRINT_ALL FILE2, T);
00440	END;
00450	
00460	
00470	END.